TODO

## Important

docs
    - examples:
        - all widgets demo
        - form validation
        - Contacts App (save data to ~/.config) (Map + ListView)

# Postponed

Canvas
    - use Action instead of listening to key event directly on Window
    - generic: Canvas[T] (T: info, updated after each rendering)
    - List[Shape]: first item rendered last
    - CanvasContent[T]: render Lambda[CanvasSize, Pair[List[Shape], T]]
    - "placeholder" content
    - $[Pair[CanvasMouseEvent,T]]
    - canvas bind-refresh ($[CanvasContent[T]]) // bind-render (capacity=1)

Wizard, MdiArea, StaticTabs, DockWindow, SystemTrayIcon

DateTime API, TimeEdit, DateEdit, DateTimeEdit, CalendarWidget


